/**
 * 浏览器相关的工具函数
 */

const FORCE_SAFARI_MODE = false; // 是否强制启用Safari模式（用于测试）

/**
 * 检测当前浏览器是否是Safari
 * 包括桌面Safari和iOS上的Safari (不包括iOS上的其他浏览器)
 * @param {boolean} forceEnable - 是否强制启用Safari模式（用于测试）
 * @returns {boolean} 如果是Safari浏览器或强制启用返回true，否则返回false
 */
export function isSafariBrowser(forceEnable = FORCE_SAFARI_MODE): boolean {
    // 强制启用模式，直接返回true
    if (forceEnable) {
        return true;
    }

    const ua = navigator.userAgent.toLowerCase();

    // 如果包含'edg'或'edge'关键词，肯定是Edge浏览器，直接返回false
    if (ua.indexOf("edg") !== -1 || ua.indexOf("edge") !== -1) {
        console.log("检测到Edge浏览器，不是Safari");
        return false;
    }

    // 检测是否包含其他浏览器标识
    const isNotSafari =
        ua.indexOf("chrome") !== -1 ||
        ua.indexOf("android") !== -1 ||
        ua.indexOf("firefox") !== -1 ||
        ua.indexOf("opera") !== -1;

    // 如果包含其他浏览器标识，不是Safari
    if (isNotSafari) {
        return false;
    }

    // Safari的UA包含'safari'
    const isSafari = ua.indexOf("safari") !== -1;

    // iOS设备上的Safari浏览器检测
    // iOS上所有浏览器都使用WebKit，需要额外检查
    let isIOSSafari = false;
    if (/iPad|iPhone|iPod/.test(navigator.userAgent)) {
        // 排除iOS上的其他浏览器
        const isNotIOSSafari =
            /CriOS/.test(navigator.userAgent) || // Chrome
            /EdgiOS/.test(navigator.userAgent) || // Edge
            /FxiOS/.test(navigator.userAgent) || // Firefox
            /OPiOS/.test(navigator.userAgent); // Opera

        // 如果是iOS设备且不是其他浏览器，则是Safari
        isIOSSafari = !isNotIOSSafari;
    }

    // 最终结果：是桌面Safari或iOS Safari
    const result = isSafari || isIOSSafari;

    return result;
}

/**
 * 检测当前浏览器是否是Edge，以及运行的平台
 * @returns {object} 包含isEdge、isAndroid和isAppleDevice的对象
 */
export function isEdgeBrowser(): any {
    const ua = navigator.userAgent.toLowerCase();

    // 检测是否包含Edge浏览器标识
    const isEdge = ua.indexOf("edg") !== -1 || ua.indexOf("edge") !== -1 || /EdgiOS/.test(navigator.userAgent);

    // 检测是否是Android设备
    const isAndroid = ua.indexOf("android") !== -1;
    
    // 检测是否是苹果设备
    const isAppleDevice = /iPad|iPhone|iPod|Mac/.test(navigator.userAgent);
    
    // 检测是否是移动设备
    const isMobile = /mobile|android|iphone|ipod|ipad/.test(ua);
    
    // 打印调试信息
    console.log("浏览器环境:", { 
        userAgent: navigator.userAgent,
        isEdge, 
        isAndroid, 
        isAppleDevice,
        isMobile
    });

    return { isEdge, isAndroid, isAppleDevice, isMobile };
}

/**
 * 检测当前浏览器是否是苹果设备上的Edge浏览器
 * @returns {boolean} 如果是苹果设备上的Edge浏览器返回true，否则返回false
 */
export function isAppleEdgeBrowser(): boolean {
    const { isEdge, isAppleDevice } = isEdgeBrowser();
    return isEdge && isAppleDevice;
}